package com.lm.controller;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.nio.charset.Charset;

/**
 * @author liming
 * @date 2018.1.18
 *
 *
 * 注解@ControllerAdvice是一个组件注解，它使得其实现类能够被classpath扫描自动发现。
 * 若应用是通过MVC命令空间或MVC Java编程方式配置，那么该特性默认是自动开启的。
 * 注解@ControllerAdvice的类可以拥有@ExceptionHandler、@InitBinder或@ModelAttribute注解的方法，
 * 并且这些方法会被应用至控制器类层次的所有@RequestMapping方法上。
 *
 */

@ControllerAdvice
public class AdviceController {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ResponseEntity<String> handleException(Exception e) {
        String msg = e.getMessage();
        HttpHeaders headers = new HttpHeaders();
        //MediaType mediaType = new MediaType("text","html", Charset.forName("utf-8"));
        //headers.setContentType(mediaType);
        return new ResponseEntity<>("AdviceController 异常处理:  异常信息:" + msg, headers, HttpStatus.CREATED);
    }
}